﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using DevComponents.WinForms;
using RM2012Server.Model;
using RM2012Server.Component;
using RM2012Server.Controller;
using RM2012Server.Business;
using System.Data.SqlClient;
using System.Threading;

namespace RM2012Server.View
{
    public partial class frmMain : Office2007RibbonForm
    {
        #region Fields
        UserCtrl m_UserCtrl = new UserCtrl();
        frmLogin m_FrmLogin = null;
        frmChangePassword m_FrmChangePassword = null;
        frmProfile m_FrmProfile = null;
        public static bool isLoggedIn = false; 
        #endregion

        #region Constructor
        public frmMain()
        {
            InitializeComponent();
            frmSplash f = new frmSplash();
            f.Show();
            System.Threading.Thread.Sleep(3000);
            f.Close();
        }
        #endregion

        #region Load
        private void frmMain_Load(object sender, EventArgs e)
        {
            if (DataServices.OpenConnection())
            {
                LoadUI();
                //Default();
                //LoginSystem();

                this.Cursor = MyCursor.Create(System.IO.Path.Combine(Application.StartupPath, "Pointer.cur"));
                RM2012ribbonControl.QatFrequentCommands.Add(btnTuyChonTop);

                Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\DevComponents\Ribbon");
                if (key != null)
                {
                    try
                    {
                        String layout = key.GetValue("RibbonPadCSLayout", "").ToString();
                        if (layout != "" && layout != null)
                        {
                            RM2012ribbonControl.QatLayout = layout;
                        }
                    }
                    catch
                    {
                        key.Close();
                    }
                    finally
                    {
                        key.Close();
                    }
                }
                StartButton.Pulse(11);
            }
            else
            {
                ReConnect();
            }

            //Default User Interface
            Default();

            //Open Server
            Thread t = new Thread(new ThreadStart(ServerStart));
            t.Start();
        }
        #endregion

        #region Start Server UDP
        public void OpenServer()
        {
            Thread t = new Thread(new ThreadStart(ServerStart));
            t.Start();
        }

        public void ServerStart()
        {
            try
            {
                MyUDPServer objServer = new MyUDPServer();
                objServer.OnStart();
            }
            catch
            {
                MessageBoxEx.Show("Error Server Desktop !");
            }
        }
        #endregion

        #region Form Actived
        private void frmMain_Activated(object sender, EventArgs e)
        {
            if (!isLoggedIn)
            {
                LoginSystem();
            }
        }
        #endregion

        #region Save Status of Form while Application Quit
        private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (RM2012ribbonControl.QatLayoutChanged)
            {
                Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"Software\DevComponents\Ribbon");
                try
                {
                    key.SetValue("RibbonPadCSLayout", RM2012ribbonControl.QatLayout);
                }
                catch
                {
                    key.Close();
                }
                finally
                {
                    key.Close();
                }
            }
        }
        #endregion

        #region Quick Toolbar Items
        public void ShowQuickToolbarItems(bool bValue)
        {
            SubItemsCollection arr = RM2012ribbonControl.QuickToolbarItems;
            if (arr.Count > 0)
            {
                for (int i = 0; i < arr.Count; i++)
                {
                    arr[i].Visible = bValue;
                    if (arr[i].Equals(StartButton))
                    {
                        arr[i].Visible = true;
                    }
                }
            }
        }
        #endregion

        #region Login System
        public void LoginSystem()
        {
            Cont:
            if (m_FrmLogin == null || m_FrmLogin.IsDisposed)
            {
                m_FrmLogin = new frmLogin();
            }

            if (m_FrmLogin.ShowDialog() == DialogResult.OK)
            {
                if (m_FrmLogin.txtUsername.Text == "")
                {
                    m_FrmLogin.txtUsername.Text = null;
                    m_FrmLogin.txtUsername.WatermarkText = "Chưa nhập tên !";
                    goto Cont;
                }
                else if (m_FrmLogin.txtPassword.Text == "")
                {
                    m_FrmLogin.txtPassword.Text = null;
                    m_FrmLogin.txtPassword.WatermarkText = "Chưa nhập mật khẩu !";
                    goto Cont;
                }
                else
                {
                    int result = m_UserCtrl.AuthenticationResult(m_FrmLogin.txtUsername.Text.Trim(), m_FrmLogin.txtPassword.Text);
                    switch (result)
                    {
                        case 0:
                            m_FrmLogin.txtUsername.Text = null;
                            m_FrmLogin.txtUsername.WatermarkText = "Tài khoản không tồn tại.";
                            goto Cont;
                        case 1:
                            m_FrmLogin.txtPassword.Text = null;
                            m_FrmLogin.txtPassword.WatermarkText = "Mật khẩu không chính xác.";
                            goto Cont;
                        case 2:
                            m_FrmLogin.txtPassword.Text = null;
                            m_FrmLogin.txtPassword.WatermarkText = "Bạn không có quyền.";
                            goto Cont;
                        case 3:
                            SetPermission(GeneralInfo.userGroupId);
                            lblStatusGroupName.Text = GeneralInfo.userGroupName;
                            lblStatusFullName.Text = GeneralInfo.fullName;
                            isLoggedIn = true;
                            LoadUserProfile();
                            frmMain.ActiveForm.WindowState = FormWindowState.Maximized;
                            if (GeneralInfo.userGroupId.Equals("G001"))
                            {
                                lblStatusFullName.ForeColor = Color.Red;
                                lblStatusGroupName.ForeColor = Color.Red;
                            }
                            else if (GeneralInfo.userGroupId.Equals("G002"))
                            {
                                lblStatusFullName.ForeColor = Color.Green;
                                lblStatusGroupName.ForeColor = Color.Green;
                            }
                            else if (GeneralInfo.userGroupId.Equals("G003"))
                            {
                                lblStatusFullName.ForeColor = Color.Blue;
                                lblStatusGroupName.ForeColor = Color.Blue;
                            }
                            else if (GeneralInfo.userGroupId.Equals("G004"))
                            {
                                lblStatusFullName.ForeColor = Color.Fuchsia;
                                lblStatusGroupName.ForeColor = Color.Fuchsia;
                            }
                            else
                            {
                                lblStatusFullName.ForeColor = Color.DimGray;
                                lblStatusGroupName.ForeColor = Color.DimGray;
                            }
                            break;
                        default:
                            goto Cont;
                    }
                }
            }
            else
                return;
        }
        #endregion

        #region Change Password
        private void btnChangeDongY_Click(object sender, EventArgs e)
        {
            //UpdatePassword();
            String m_Username = GeneralInfo.userName;
            String m_Password = GeneralInfo.passWord;
            String m_MatKhauCu = Function.getMD5Hash(txtMatKhauCu.Text);
            String m_MatKhauMoi = Function.getMD5Hash(txtMatKhauMoi.Text);
            String m_XacNhan = Function.getMD5Hash(txtXacNhan.Text);
            UserInfo m_info = new UserInfo();
            m_info.UserId = m_UserCtrl.GetIdByUsername(m_Username);
            m_info.PassWord = m_MatKhauMoi;

            if (txtMatKhauCu.Text.Equals("") || txtMatKhauCu.Text == null || txtMatKhauMoi.Text.Equals("") || txtMatKhauMoi.Text == null || txtXacNhan.Text.Equals("") || txtXacNhan.Text == null)
            {
                MessageBoxEx.Show("Thông tin chưa đầy đủ !", "ĐỔI MẬT KHẨU", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else if (m_Password != m_MatKhauCu)
            {
                MessageBoxEx.Show("Mật khẩu cũ không chính xác !", "ĐỔI MẬT KHẨU", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else if (m_MatKhauMoi != m_XacNhan)
            {
                MessageBoxEx.Show("Xác nhận không giống mật khẩu mới !", "ĐỔI MẬT KHẨU", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else
            {
                if (m_UserCtrl.ChangePassword(m_info) > 0)
                {
                    MessageBoxEx.Show("Đổi mật khẩu thành công !", "ĐỔI MẬT KHẨU", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    MessageBoxEx.Show("Không thể thay đổi ! Vui lòng kiểm tra lại kết nối !", "ĐỔI MẬT KHẨU", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
        }

        public void UpdatePassword()
        {
            try
            {
                if (txtMatKhauCu.Text == "")
                {
                    txtMatKhauCu.WatermarkText = "Chưa nhập mật khẩu hiện tại";
                    txtMatKhauMoi.WatermarkText = "";
                    txtXacNhan.WatermarkText = "";
                }

                if (txtMatKhauMoi.Text == "")
                {
                    txtMatKhauCu.WatermarkText = "";
                    txtMatKhauMoi.WatermarkText = "Chưa nhập mật khẩu mới";
                    txtXacNhan.WatermarkText = "";
                }

                if (txtXacNhan.Text == "")
                {
                    txtMatKhauCu.WatermarkText = "";
                    txtMatKhauMoi.WatermarkText = "";
                    txtXacNhan.WatermarkText = "Chưa nhập xác nhận";
                }

                String m_Username = GeneralInfo.userName;
                String m_Password = GeneralInfo.passWord;
                String m_MatKhauCu = Function.getMD5Hash(txtMatKhauCu.Text);
                String m_MatKhauMoi = Function.getMD5Hash(txtMatKhauMoi.Text);
                String m_XacNhan = Function.getMD5Hash(txtXacNhan.Text);
                UserInfo m_info = new UserInfo();
                m_info.UserId = m_UserCtrl.GetIdByUsername(m_Username);
                m_info.PassWord = m_MatKhauMoi;

                if (m_Password != m_MatKhauCu)
                {
                    txtMatKhauCu.Text = null;
                    txtMatKhauCu.WatermarkText = "Nhập sai mật khẩu cũ";
                    txtMatKhauMoi.WatermarkText = "";
                    txtXacNhan.WatermarkText = "";
                }
                else if (m_MatKhauMoi != m_XacNhan)
                {
                    txtMatKhauCu.WatermarkText = "";
                    txtMatKhauMoi.WatermarkText = "";
                    txtXacNhan.Text = null;
                    txtXacNhan.WatermarkText = "Nhập xác nhận không khớp";
                }
                else
                {
                    if (m_UserCtrl.ChangePassword(m_info) > 0)
                    {
                        MessageBoxEx.Show("Đổi mật khẩu thành công !", "ĐỔI MẬT KHẨU", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        MessageBoxEx.Show("Không thể thay đổi ! Vui lòng kiểm tra lại kết nối !", "ĐỔI MẬT KHẨU", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
            }
            catch
            {
                MessageBoxEx.Show("Không thể thay đổi ! Vui lòng kiểm tra lại kết nối !", "ĐỔI MẬT KHẨU", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }  
        }

        public void ChangePassword()
        {
        Cont:
            if (m_FrmChangePassword.ShowDialog() == DialogResult.OK)
            {
                if (m_FrmChangePassword.txtMatKhauCu.Text == "")
                {
                    m_FrmChangePassword.txtMatKhauCu.WatermarkText = "Chưa nhập mật khẩu hiện tại";
                    m_FrmChangePassword.txtMatKhauMoi.WatermarkText = "";
                    m_FrmChangePassword.txtXacNhan.WatermarkText = "";
                    goto Cont;
                }

                if (m_FrmChangePassword.txtMatKhauMoi.Text == "")
                {
                    m_FrmChangePassword.txtMatKhauCu.WatermarkText = "";
                    m_FrmChangePassword.txtMatKhauMoi.WatermarkText = "Chưa nhập mật khẩu mới";
                    m_FrmChangePassword.txtXacNhan.WatermarkText = "";
                    goto Cont;
                }

                if (m_FrmChangePassword.txtXacNhan.Text == "")
                {
                    m_FrmChangePassword.txtMatKhauCu.WatermarkText = "";
                    m_FrmChangePassword.txtMatKhauMoi.WatermarkText = "";
                    m_FrmChangePassword.txtXacNhan.WatermarkText = "Chưa nhập xác nhận";
                    goto Cont;
                }

                String m_Username = GeneralInfo.userName;
                String m_Password = GeneralInfo.passWord;
                String m_MatKhauCu = Function.getMD5Hash(m_FrmChangePassword.txtMatKhauCu.Text);
                String m_MatKhauMoi = Function.getMD5Hash(m_FrmChangePassword.txtMatKhauMoi.Text);
                String m_XacNhan = Function.getMD5Hash(m_FrmChangePassword.txtXacNhan.Text);
                UserInfo m_info = new UserInfo();
                m_info.UserId = m_UserCtrl.GetIdByUsername(m_Username);
                m_info.PassWord = m_MatKhauMoi;

                if (m_Password != m_MatKhauCu)
                {
                    m_FrmChangePassword.txtMatKhauCu.Text = null;
                    m_FrmChangePassword.txtMatKhauCu.WatermarkText = "Nhập sai mật khẩu cũ";
                    m_FrmChangePassword.txtMatKhauMoi.WatermarkText = "";
                    m_FrmChangePassword.txtXacNhan.WatermarkText = "";
                    goto Cont;
                }
                else if (m_MatKhauMoi != m_XacNhan)
                {
                    m_FrmChangePassword.txtMatKhauCu.WatermarkText = "";
                    m_FrmChangePassword.txtMatKhauMoi.WatermarkText = "";
                    m_FrmChangePassword.txtXacNhan.Text = null;
                    m_FrmChangePassword.txtXacNhan.WatermarkText = "Nhập xác nhận không khớp";
                    goto Cont;
                }
                else
                {
                    if (m_UserCtrl.ChangePassword(m_info) > 0)
                    {
                        MessageBoxEx.Show("Đổi mật khẩu thành công !", "ĐỔI MẬT KHẨU", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        MessageBoxEx.Show("Không thể thay đổi ! Vui lòng kiểm tra lại kết nối !", "ĐỔI MẬT KHẨU", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
            }
            else
                return;
        }
        #endregion

        #region Re-Connect
        public void ReConnect()
        {
            //if (m_FrmConnection == null || m_FrmConnection.IsDisposed)
            //{
            //    m_FrmConnection = new frmConnection();
            //}
            //if (m_FrmConnection.DialogResult == DialogResult.OK)
            //{
            //    MessageBoxEx.Show("Đã thiết lập kết nối thành công ! Hãy khởi động lại để thực thi kết nối !", "KẾT NỐI THÀNH CÔNG", MessageBoxButtons.OK, MessageBoxIcon.Information);
            //    this.Close();
            //}
            //else
            //{
            //    return;
            //}
            ShowForm.ShowFormConnection();
        }
        #endregion

        #region User Profile
        public void LoadUserProfile()
        {
            string userName = GeneralInfo.userName;
            if ((!userName.Equals("")) && (userName != null))
            {
                string userId = m_UserCtrl.GetIdByUsername(userName);
                DataTable currentInfo = m_UserCtrl.GetById(userId);
                if (currentInfo.Rows.Count > 0)
                {
                    txtProName.Text = currentInfo.Rows[0]["FullName"].ToString();
                    txtProAddress.Text = currentInfo.Rows[0]["Address"].ToString();
                    txtProPhone.Text = currentInfo.Rows[0]["Phone"].ToString();
                    txtProEmail.Text = currentInfo.Rows[0]["Email"].ToString();
                }
            }
        }

        private void btnProUpdate_Click(object sender, EventArgs e)
        {
            UserInfo m_info = new UserInfo();
            m_info.UserId = m_UserCtrl.GetIdByUsername(GeneralInfo.userName);
            m_info.FullName = txtProName.Text;
            m_info.Address = txtProAddress.Text;
            m_info.Phone = txtProPhone.Text;
            m_info.Email = txtProEmail.Text;
            if (m_UserCtrl.UpdateProfile(m_info) > 0)
            {
                MessageBoxEx.Show("Cập nhật thành công !", "CẬP NHẬT", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBoxEx.Show("Không thể cập nhật ! Vui lòng kiểm tra lại kết nối !", "CẬP NHẬT", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
        #endregion

        #region Permission
        public void SetPermission(String per)
        {
            switch(per)
            {
                case "G001": IsManager(); break;
                case "G002": IsModerator(); break;
                case "G003": IsUser(); break;
                case "G004": IsTrialMod(); break;
                default: Default(); break;
            }
        }

        public void Default()
        {
            btnTuyChonTop.Enabled = false;
            btnTuyChonTop.Visible = false;
            qatCustomizeItem1.Visible = false;
            ShowQuickToolbarItems(qatCustomizeItem1.Visible);
            //Menu Start
            mnuItemLogin.Visible = true;
            mnuItemLogout.Visible = false;
            mnuItemProfile.Visible = false;
            mnuItemChangePass.Visible = false;
            mnuItemBackup.Visible = false;
            mnuItemRestore.Visible = false;
            mnuItemClose.Visible = false;
            mnuItemOptions.Visible = false;
            mnuItemAbout.Visible = false;
            mnuItemExit.Visible = true;
            //Quan Ly
            rbarServe.Visible = false;
            rbarTableArea.Visible = false;
            rbarMaterial.Visible = false;
            rbarUser.Visible = false;
            //Thong Ke
            rbarCollect.Visible = false;
            rbarLog.Visible = false;
            rbarInventory.Visible = false;
            //Tra Cuu
            rbarSearchTable.Visible = false;
            //Quy Dinh
            rbarOptions.Visible = false;
            rbarGeneralSetting.Visible = false;
            //Tro Giup
            rbarHelp.Visible = false;
            //Choise
            tabQuanLy.Visible = false;
            tabThongKe.Visible = false;
            tabTraCuu.Visible = false;
            tabQuyDinh.Visible = false;
            tabTroGiup.Visible = false;
        }

        public void IsManager()
        {
            btnTuyChonTop.Enabled = true;
            btnTuyChonTop.Visible = true;
            qatCustomizeItem1.Visible = true;
            ShowQuickToolbarItems(qatCustomizeItem1.Visible);
            //Menu Start
            mnuItemLogin.Visible = false;
            mnuItemLogout.Visible = true;
            mnuItemProfile.Visible = true;
            mnuItemChangePass.Visible = true;
            mnuItemBackup.Visible = true;
            mnuItemRestore.Visible = true;
            mnuItemClose.Visible = true;
            mnuItemOptions.Visible = true;
            mnuItemAbout.Visible = true;
            mnuItemExit.Visible = true;
            //Quan Ly
            rbarServe.Visible = true;
            rbarTableArea.Visible = true;
            rbarMaterial.Visible = true;
            rbarUser.Visible = true;
            //Thong Ke
            rbarCollect.Visible = true;
            rbarLog.Visible = true;
            rbarInventory.Visible = true;
            //Tra Cuu
            rbarSearchTable.Visible = true;
            //Quy Dinh
            rbarOptions.Visible = true;
            rbarGeneralSetting.Visible = true;
            //Tro Giup
            rbarHelp.Visible = true;
            //Choise
            RM2012ribbonControl.SelectedRibbonTabItem = tabQuanLy;
            tabQuanLy.Visible = true;
            tabThongKe.Visible = true;
            tabTraCuu.Visible = true;
            tabQuyDinh.Visible = true;
            tabTroGiup.Visible = true;
        }

        public void IsModerator()
        {
            btnTuyChonTop.Enabled = true;
            btnTuyChonTop.Visible = true;
            qatCustomizeItem1.Visible = true;
            ShowQuickToolbarItems(qatCustomizeItem1.Visible);
            //Menu Start
            mnuItemLogin.Visible = false;
            mnuItemLogout.Visible = true;
            mnuItemProfile.Visible = true;
            mnuItemChangePass.Visible = true;
            mnuItemBackup.Visible = false;
            mnuItemRestore.Visible = false;
            mnuItemClose.Visible = true;
            mnuItemOptions.Visible = true;
            mnuItemAbout.Visible = true;
            mnuItemExit.Visible = true;
            //Quan Ly
            rbarServe.Visible = true;
            rbarTableArea.Visible = true;
            rbarMaterial.Visible = true;
            rbarUser.Visible = false;
            //Thong Ke
            rbarCollect.Visible = true;
            rbarLog.Visible = false;
            rbarInventory.Visible = true;
            //Tra Cuu
            rbarSearchTable.Visible = true;
            //Quy Dinh
            rbarOptions.Visible = false;
            rbarGeneralSetting.Visible = false;
            //Tro Giup
            rbarHelp.Visible = true;
            //Choise
            RM2012ribbonControl.SelectedRibbonTabItem = tabQuanLy;
            tabQuanLy.Visible = true;
            tabThongKe.Visible = true;
            tabTraCuu.Visible = true;
            tabQuyDinh.Visible = false;
            tabTroGiup.Visible = true;
        }

        public void IsUser()
        {
            btnTuyChonTop.Enabled = false;
            btnTuyChonTop.Visible = false;
            qatCustomizeItem1.Visible = true;
            ShowQuickToolbarItems(qatCustomizeItem1.Visible);
            //Menu Start
            mnuItemLogin.Visible = false;
            mnuItemLogout.Visible = true;
            mnuItemProfile.Visible = true;
            mnuItemChangePass.Visible = true;
            mnuItemBackup.Visible = false;
            mnuItemRestore.Visible = false;
            mnuItemClose.Visible = true;
            mnuItemOptions.Visible = false;
            mnuItemAbout.Visible = true;
            mnuItemExit.Visible = true;
            //Quan Ly
            rbarServe.Visible = false;
            rbarTableArea.Visible = false;
            rbarMaterial.Visible = false;
            rbarUser.Visible = false;
            //Thong Ke
            rbarCollect.Enabled = false;
            rbarLog.Enabled = false;
            rbarInventory.Enabled = false;
            //Tra Cuu
            rbarSearchTable.Visible = true;
            //Quy Dinh
            rbarOptions.Visible = false;
            rbarGeneralSetting.Visible = false;
            //Tro Giup
            rbarHelp.Enabled = true;
            rbarHelp.Visible = true;
            //Choise
            RM2012ribbonControl.SelectedRibbonTabItem = tabTraCuu;
            tabQuanLy.Visible = false;
            tabThongKe.Visible = false;
            tabTraCuu.Visible = true;
            tabQuyDinh.Visible = false;
            tabTroGiup.Visible = true;
        }

        public void IsTrialMod()
        {
            btnTuyChonTop.Enabled = false;
            btnTuyChonTop.Visible = false;
            qatCustomizeItem1.Visible = true;
            ShowQuickToolbarItems(qatCustomizeItem1.Visible);
            //Menu Start
            mnuItemLogin.Visible = false;
            mnuItemLogout.Visible = true;
            mnuItemProfile.Visible = true;
            mnuItemChangePass.Visible = true;
            mnuItemBackup.Visible = false;
            mnuItemRestore.Visible = false;
            mnuItemClose.Visible = true;
            mnuItemOptions.Visible = false;
            mnuItemAbout.Visible = true;
            mnuItemExit.Visible = true;
            //Quan Ly
            rbarServe.Visible = false;
            rbarTableArea.Visible = false;
            rbarMaterial.Visible = false;
            rbarUser.Visible = false;
            //Thong Ke
            rbarCollect.Visible = false;
            rbarLog.Visible = false;
            rbarInventory.Visible = false;
            //Tra Cuu
            rbarSearchTable.Visible = true;
            //Quy Dinh
            rbarOptions.Visible = false;
            rbarGeneralSetting.Visible = false;
            //Tro Giup
            rbarHelp.Visible = true;
            //Choise
            RM2012ribbonControl.SelectedRibbonTabItem = tabTraCuu;
            tabQuanLy.Visible = false;
            tabThongKe.Visible = false;
            tabTraCuu.Visible = true;
            tabQuyDinh.Visible = false;
            tabTroGiup.Visible = true;
        }
        #endregion

        #region Form Show
        //QUAN LY
        private void btnTables_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormTables();
        }

        private void btnArea_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormArea();
        }

        private void btnStates_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormState();
        }

        private void btnUserGroup_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormUserGroup();
        }

        private void btnUsers_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormUser();
        }

        private void btnPermission_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormPermission();
        }

        private void btnUnit_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormUnit();
        }

        private void btnCategory_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormCategory();
        }

        private void btnMaterial_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormMaterial();
        }

        private void btnMenu_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormMenu();
        }

        private void btnSupplier_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormSupplier();
        }

        private void btnServe_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormServe();
        }

        private void btnBooking_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormBooking();
        }

        private void btnCustomer_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormCustomer();
        }

        private void btnInvoice_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormInvoice();
        }

        private void btnServe2_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormServe2();
        }

        //THONG KE
        private void btnCollectCustomer_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormCollectCustomer();
        }

        private void btnLog_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormLog();
        }

        private void btnReportInvoice_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormReportInvoice();
        }

        private void btnCollectInvoice_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormInvoice();
        }

        private void btnInventoryType_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormInventoryType();
        }

        private void btnCollectBusiness_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormBusiness();
        }

        private void btnInventoryImport_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormImportExport();
        }

        private void btnInventoryExport_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormImportExport();
        }

        private void btnInventoryOther_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormImportExport();
        }

        //TRA CUU

        //QUY DINH
        private void btnSetupConnection_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormConnection();
        }

        //TRO GIUP
        private void btnAbout_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormAboutTran();
        }

        private void btnHelp_Click(object sender, EventArgs e)
        {
            try
            {
                Help.ShowHelp(this, helpProvider.HelpNamespace, HelpNavigator.TableOfContents);
            }
            catch
            {
                MessageBoxEx.Show("Hướng dẫn sử dụng không tồn tại hoặc đường dẫn không đúng !", "THÔNG BÁO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
        #endregion

        #region Menu Start
        private void mnuItemLogin_Click(object sender, EventArgs e)
        {
            LoginSystem();
        }

        private void mnuItemLogout_Click(object sender, EventArgs e)
        {
            if (MessageBoxEx.Show("Bạn muốn thoát khỏi chương trình ?", "ĐĂNG XUẤT", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                lblStatusFullName.ForeColor = Color.DimGray;
                lblStatusGroupName.ForeColor = Color.DimGray;
                lblStatusGroupName.Text = "";
                lblStatusFullName.Text = "Không có";
                foreach (Form frm in MdiChildren)
                {
                    frm.Dispose();
                    frm.Close();
                }
                Default();
            }
        }

        private void ShowQuickToolbarItems2(object sender, EventArgs e)
        {
            lblStatusFullName.ForeColor = Color.DimGray;
            lblStatusGroupName.ForeColor = Color.DimGray;
            lblStatusGroupName.Text = "";
            lblStatusFullName.Text = "Không có";
            foreach (Form frm in MdiChildren)
            {
                frm.Dispose();
                frm.Close();
            }
            Default();
        }

        private void mnuItemChangePass_Click(object sender, EventArgs e)
        {
            if (m_FrmChangePassword == null || m_FrmChangePassword.IsDisposed)
                m_FrmChangePassword = new frmChangePassword();
            m_FrmChangePassword.txtMatKhauCu.Text = null;
            m_FrmChangePassword.txtMatKhauMoi.Text = null;
            m_FrmChangePassword.txtXacNhan.Text = null;
            m_FrmChangePassword.txtMatKhauCu.WatermarkText = "Mật khẩu cũ";
            m_FrmChangePassword.txtMatKhauMoi.WatermarkText = "Mật khẩu mới";
            m_FrmChangePassword.txtXacNhan.WatermarkText = "Nhập lại mật khẩu mới";

            ChangePassword();
        }


        private void mnuItemProfile_Click(object sender, EventArgs e)
        {
            if (m_FrmProfile == null || m_FrmProfile.IsDisposed)
            {
                m_FrmProfile = new frmProfile();
                m_FrmProfile.Show();
            } 
            else
            {
                m_FrmProfile.Activate();
            }
        }

        private void mnuItemBackup_Click(object sender, EventArgs e)
        {
            if (backupDialog.ShowDialog() == DialogResult.OK)
            {
                String sqlBackup = "BACKUP DATABASE " + GeneralInfo.databaseName + " TO DISK = '" + backupDialog.FileName.ToString() + "'";
                SqlCommand cmdBackup = new SqlCommand(sqlBackup);
                DataServices dataServices = new DataServices();
                try
                {
                    dataServices.Load(cmdBackup);
                    MessageBoxEx.Show("Sao lưu dữ liệu thành công !", "SAO LƯU", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch
                {
                    MessageBoxEx.Show("Không thể sao lưu dữ liệu ! Xin vui lòng kiểm tra lại kết nối !", "SAO LƯU", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            } 
            else
            {
                return;
            }
        }

        private void btnItemBackup_Click(object sender, EventArgs e)
        {
            if (backupDialog.ShowDialog() == DialogResult.OK)
            {
                String sqlBackup = "BACKUP DATABASE " + GeneralInfo.databaseName + " TO DISK = '" + backupDialog.FileName.ToString() + "'";
                SqlCommand cmdBackup = new SqlCommand(sqlBackup);
                DataServices dataServices = new DataServices();
                try
                {
                    dataServices.Load(cmdBackup);
                    MessageBoxEx.Show("Sao lưu dữ liệu thành công !", "SAO LƯU", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch
                {
                    MessageBoxEx.Show("Không thể sao lưu dữ liệu ! Xin vui lòng kiểm tra lại kết nối !", "SAO LƯU", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            else
            {
                return;
            }
        }

        private void mnuItemRestore_Click(object sender, EventArgs e)
        {
            if (restoreDialog.ShowDialog() == DialogResult.OK)
            {
                String sqlRestore = "RESTORE DATABASE " + GeneralInfo.databaseName + " FROM DISK '" + restoreDialog.FileName.ToString() + "'";
                SqlCommand cmdRestore = new SqlCommand(sqlRestore);
                DataServices dataServices = new DataServices();
                try
                {
                    dataServices.Load(cmdRestore);
                    MessageBoxEx.Show("Phục hồi dữ liệu thành công !", "PHỤC HỒI", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch
                {
                    MessageBoxEx.Show("Không thể phục hồi dữ liệu ! Xin vui lòng kiểm tra lại kết nối !", "PHỤC HỒI", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            } 
            else
            {
                return;
            }
        }

        private void btnItemRestore_Click(object sender, EventArgs e)
        {
            if (restoreDialog.ShowDialog() == DialogResult.OK)
            {
                String sqlRestore = "RESTORE DATABASE " + GeneralInfo.databaseName + " FROM DISK '" + restoreDialog.FileName.ToString() + "'";
                SqlCommand cmdRestore = new SqlCommand(sqlRestore);
                DataServices dataServices = new DataServices();
                try
                {
                    dataServices.Load(cmdRestore);
                    MessageBoxEx.Show("Phục hồi dữ liệu thành công !", "PHỤC HỒI", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch
                {
                    MessageBoxEx.Show("Không thể phục hồi dữ liệu ! Xin vui lòng kiểm tra lại kết nối !", "PHỤC HỒI", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            else
            {
                return;
            }
        }

        private void mnuItemAbout_Click(object sender, EventArgs e)
        {
            ShowForm.ShowFormAbout();
        }

        private void mnuItemClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void mnuItemExit_Click(object sender, EventArgs e)
        {
            if (MessageBoxEx.Show("Bạn muốn thoát khỏi chương trình ?", "THOÁT", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                Application.Exit();
            }
        }
        #endregion

        #region Choise User Interface
        private void cmbUserInterface_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbUserInterface.SelectedIndex == 0)
            {
                RM2012ribbonControl.Style = eDotNetBarStyle.Office2007;
                styleManager.ManagerStyle = eStyle.Office2007Blue;
            }
            else if (cmbUserInterface.SelectedIndex == 1)
            {
                RM2012ribbonControl.Style = eDotNetBarStyle.Office2010;
                styleManager.ManagerStyle = eStyle.Office2010Blue;
            }
            else if (cmbUserInterface.SelectedIndex == 2)
            {
                RM2012ribbonControl.Style = eDotNetBarStyle.Windows7;
                styleManager.ManagerStyle = eStyle.Windows7Blue;
            }
            RM2012ribbonControl.Update();
            foreach (Control c in this.Controls)
            {
                c.Update();
            }
        }

        public void LoadUI()
        {
            //if (RM2012ribbonControl.Style == eDotNetBarStyle.Office2007)
            //{
            //    cmbUserInterface.SelectedIndex = 0;
            //}
            //else if (RM2012ribbonControl.Style == eDotNetBarStyle.Office2010)
            //{
            //    cmbUserInterface.SelectedIndex = 1;
            //}
            //else if (RM2012ribbonControl.Style == eDotNetBarStyle.Windows7)
            //{
            //    cmbUserInterface.SelectedIndex = 2;
            //}
            //else
            //{
            //    cmbUserInterface.SelectedIndex = -1;
            //}
            cmbUserInterface.SelectedIndex = 1;
        }
        #endregion

        #region Temp
        #endregion
    }
}
